package org.example;

public interface ITree<K extends Comparable<K>, V> {
    void put(K key, V value);
    V get(K key);
    V remove(K key);
    ITreeNode<K, V> getRoot();

    interface ITreeNode<K, V> {
        ITreeNode<K, V> getLeft();
        void setLeft(ITreeNode<K, V> left);

        ITreeNode<K, V> getRight();
        void setRight(ITreeNode<K, V> right);

        K getKey();
        void setKey(K key);

        V getValue();
        void setValue(V value);

        ITreeNode<K, V> getParent();
        void setParent(ITreeNode<K, V> parent);
    }
}
